<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Producto_establecimiento_lst( $this );

	class Producto_establecimiento_lst extends Lst
	{
	function Producto_establecimiento_lst( &$oModule )
		{
			$this->Lst( $oModule );
			$this->aFields['ncUbicacion'] = getParam('ncUbicacion');
		}
	function setLevel()
		{
			switch ( $this->getOptionView() )
			{
				case 'L':
					$this->aShowColumns = array( 'bEstrella', 'ncRotulo', 'Producto', 'Servicio', 'Funciones' );
					break;
			}
			if ( array_key_exists( 'ncProducto' , $this->aFields )  ) unset($this->aShowColumns[array_search( 'Producto',$this->aShowColumns)]);
			if ( array_key_exists( 'ncEstablecimiento' , $this->aFields ) ) unset($this->aShowColumns[array_search( 'Servicio',$this->aShowColumns)]);
		}
	function initialize()
		{
			$this->oFiltro = $this->oModule->loadClass( 'Producto_establecimiento_frm' );
			$this->aFields = array_merge ( (array)$this->aFields,  (array)$this->oFiltro->getFieldArray() );
			
			$this->setTitle ( "Servicios" );
			$this->setSummary( "Esta tabla contiene el listado de servicios de los productos turisticos" );
			$this->addColumnAction ( 'Producto', VER_PRODUCTO_TURISTICO, 'ncProducto', 'cdProducto');
			$this->addColumnAction ( 'Servicio', VER_ESTABLECIMIENTO, 'ncEstablecimiento', 'cdEstablecimiento');
			$this->addColumn ( 'Funciones', '');
			//$cSql = "SELECT ncProducto, cdProducto FROM gtProductoTuristico ";
			//$this->addDimension( 'PTu.ncProducto', 'Producto' , $this->oDatabase->getKeyArray($cSql) );
			$cSql = "SELECT ncProducto, ncProductoPadre, cdProducto FROM gtProductoTuristico ORDER BY 2";
			$this->addTreeDimension( 'PTu.ncProducto', 'Producto' , $this->oDatabase->getKeyArray($cSql) );
			$cSql = "SELECT ncUbicacion, cdUbicacion FROM acUbicacion WHERE (ncUbicacionPadre = 25 OR ncUbicacion in (25,2) ) AND ncPais=8  ";
			$this->addDimension( 'ncUbicacion', 'Barrio',  $this->oDatabase->getKeyArray($cSql) );
			$this->addMetric( 'count(*)', 'Registros' );
			$this->addColumnStar ( 'bEstrella', MODIFICAR_ESTRELLA_ESTABLECIMIENTO, 'ncEstablecimiento', 'bEstrella' );
			$this->addColumnTag( 'ncRotulo', ACTUALIZAR_TAG_ESTABLECIMIENTOS, 'ncEstablecimiento', 'gtEstablecimientoRotulo', $this->oDatabase->getKeyArray('SELECT ncRotulo, cdRotulo FROM gtRotuloEstablecimiento' ) );
		}
	function makeColumn ( $aRow, $cField )
		{
			switch( $cField )
			{
				case 'Funciones':
					$aFunciones = $this->oDatabase->getArray( "SELECT cdFuncion FROM gtEstablecimientoFuncion as EAc JOIN gcFuncion as Act ON Act.ncFuncion = EAc.ncFuncion WHERE ncEstablecimiento = " . $aRow['ncEstablecimiento']  );
                    foreach( $aFunciones  as $cFuncion )
					    $cReturn .= extractLanguage( $cFuncion, 'es' ) . ', ';
					break;
				default:
					return false;
				break;
			}
			return $cReturn;
		}
	function makeRowProperties( $aRow)
	{
		return $aRow['bBaja'] ? " style='background-color:black' ":"";
	}
	function query()
		{
			// Arma el Query
				$cSql = "SELECT Est.bEstrella, PEs.ncProducto,PEs.ncEstablecimiento, Est.cdEstablecimiento, PTu.cdProducto, ncUbicacion, Est.bBaja
								FROM gtProductoEstablecimiento as PEs
								JOIN gtEstablecimiento as Est
									ON Est.ncEstablecimiento= PEs.ncEstablecimiento
								LEFT JOIN atDomicilio as Dom
									ON Est.ncDomicilio = Dom.ncDomicilio
								JOIN gtProductoTuristico as PTu
									ON PTu.ncProducto= PEs.ncProducto ";
				// Arma el Filtro de la Consulta
				$this->oWhere->addArray ( $this->oFiltro->getFilterdArray('PEs') );
				$this->oWhere->add( 'Dom.ncUbicacion', $ncUbicacion );
				$this->oWhere->add( 'PTu.cdProducto', $cdProducto );
				return $cSql . $this->oWhere->make();
		}
	function makeListActions()
		{
			$cParametroRegistro =  $this->getFieldString();
			$this->addListAction ( AGREGAR_PRODUCTO_ESTABLECIMIENTO, $cParametroRegistro, 'I' );
			$this->addListAction ( AGREGAR_PRODUCTO_ESTABLECIMIENTO_MASIVO, $cParametroRegistro, '',  VENTANA_SECUNDARIA  );
		}
	function makeRowActions( $aRow )
		{
			$cParametroRegistro = "ncProducto=" . $aRow["ncProducto"] . '&amp;' .  "ncEstablecimiento=" . $aRow["ncEstablecimiento"];
			$this->addRowAction ( MODIFICAR_PRODUCTO_ESTABLECIMIENTO, $cParametroRegistro , '', VENTANA_SECUNDARIA );
			$this->addRowAction ( ELIMINAR_PRODUCTO_ESTABLECIMIENTO ,  $cParametroRegistro );
		}
	}
?>